Django+MySQL安装配置详解(Linux)[更新为1.8.2版] 您所在的位置:网站首页 list of tables 表格 Django+MySQL安装配置详解(Linux)[更新为1.8.2版]

Django+MySQL安装配置详解(Linux)[更新为1.8.2版]

#Django+MySQL安装配置详解(Linux)[更新为1.8.2版]| 来源: 网络整理| 查看: 265

转自:http://dmyz.org/archives/110

Django是一个开源的Web应用框架,由Python写成,并于2005年7月在BSD许可证下发布。Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django采用MVC设计模式注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don’t Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型。本文介绍Django在Linux(Ubuntu 14.04.2)+MySQL(5.5.43)环境下安装、配置的过程,包括安装、运行、添加应用的所有流程,最终建立一个可以从MySQL读取文章并显示的Django应用。文章面向刚接触Python/Django的初学者,所以安装过程都以默认环境为主,用pip可以简化安装过程。

Install

首先下载Django,得到Django-1.8.2.tar.gz,后解压并安装

$ wget https://www.djangoproject.com/m/releases/1.8/Django-1.8.2.tar.gz$ tar xzvf Django-1.8.2.tar.gz$ cd Django-1.8.2$ sudo python setup.py install

如果提示缺少setuptools还要下载安装setuptools(建议提前安上,因为在安装MySQL for Python的时候也会用到)。

完成安装后,Django会拷贝django-admin.py到/usr/local/bin下,这个py文件引入了Django的管理模块。进阶安装方式可以参看virtualenv,pip

Setup

要创建一个Django项目非常简单,使用startproject命令,输入项目名称:

$ django-admin.py startproject mysite

Django会在当前目录下自动生成一个名为mysite的文件夹,里面有以下文件:

├── manage.py└── mysite    ├── __init__.py    ├── settings.py    ├── urls.py    └── wsgi.py

以上是Django 1.4以后的目录结构(如果是1.4之前的版本,manage.py和settings.py等文件是在同一层)。站点的配置放在与项目同名的一个app里(本例中是mysite),所以下文的项目文件夹指的是mysite,注意不要和mysite/mysite文件夹混淆。

__init__.py:Python特性,可以是空文件,表明这个文件夹是一个可以导入的包。settings.py:配置文件,本文主要修改数据库信息、模板目录、加载模块的信息。url.py:URL配置文件,指定函数与URL的映射关系。wsgi.py:本文中不会使用,nginx/apahce+wsgi在生产环境中运行Django时使用。

创建完成后,在项目文件夹启动Django自带的web服务器。Django会自动检查配置文件中的错误,如果全部正常则顺利启动:

$ python manage.py runserverValidating models...Performing system checks...System check identified no issues (0 silenced).You have unapplied migrations; your app may not work properly until they are applied.Run ‘python manage.py migrate’ to apply them.June 01, 2015 - 00:00:00Django version 1.8.2, using settings ‘mysite.settings’Starting development server at http://127.0.0.1:8000/Quit the server with CONTROL-C.

访问http://127.0.0.1:8000,如果顺利显示,说明Django已经安装成功了。但现在只有本机可以访问,要让外网能够访问,或是要更换默认的8000端口,可以执行命令:

$ python manage.py runserver 0.0.0.0:8080

这样就将端口修改为8080,且外网也可以通过IP访问本机上的Django。

注意红字部分提示还没有执行migrate。这是1.7版本加入的数据库迁移工具,执行:

$ python manage.py migrate

可以看到Django创建了身份认证(auth)相关的表,默认是sqlite数据库,所以项目文件夹下会生成db.sqlite3这个文件。

现在要让Django支持MySQL数据库。编辑配置文件(mysite/mysite/settings.py)。找到DATABASES的配置,当前版本是在77行,默认是sqlite,把它改成MySQL:

Python参考:http://www.cnblogs.com/fnng/p/3565912.html12345678910DATABASES= {    'default':{        'ENGINE':'django.db.backends.mysql',#设置为mysql数据库        'NAME':'dmyz',  #mysql数据库名        'USER':'root',  #mysql用户名,留空则默认为当前linux用户名        'PASSWORD':'12345',  #mysql密码        'HOST':'',  #留空默认为localhost        'PORT':'',  #留空默认为3306端口    }}

代码的中文注释,在不指定Python文件编码的情况下会引起SyntaxError,所以不要复制这些中文注释。下文的中文注释同理。

Django通过Python操作MySQL,所以要先安装MySQL for Python。

$ wget https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip$ unzip MySQL-python-1.2.5.zip$ sudo python setup.py install

可能会提示EnvironmentError: mysql_config not found。因为没有安装开发工具包,所以找不到mysql_config文件,执行:

$ sudo apt-get install libmysqld-dev--------------注意-------------1.CentOS下载mysql-devel安装yum install mysql-devel2.Ubuntu下不叫mysql-devel,而是叫libmysqld-devsudo apt-get install libmysqld-dev---------------------------------

---------------------------------

执行migrate会出现错误:

django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")

解决:

启动mysql:sudo /etc/init.d/mysqld start

修改settings中的 'HOST': '127.0.0.1', 

create database dmyz

再次执行migrate成功

---------------------------------

安装模块后再执行migrate命令,如果相关的模块/库都正确安装,Django会创建下列表:

mysql -u root -p12345回车mysql> use dmyzmysql> show tables;+----------------------------+| Tables_in_dmyz |+----------------------------+| auth_group| auth_group_permissions| auth_permission| auth_user| auth_user_groups| auth_user_user_permissions| django_admin_log| django_content_type| django_migrations| django_session+----------------------------+10 rows in set (0.00 sec) URL

现在首页还是默认内容。Django会通过URL配置文件来查找相应的对象,URL地址使用正则表达式设置。在mysite/mysite目录下可以找到urls.py文件,它是URL配置的默认起点,修改这个文件增加首页的配置:

Python123456789fromdjango.conf.urlsimport include,urlfromdjango.contribimport admin from. importviews  #引入views urlpatterns= [    url(r'^admin/',include(admin.site.urls)),    url(r'^$',views.home),#增加一条URL规则,r'^$'表示首页(/)]

在mysite/mysite文件夹下新建views.py文件,内容如下:

Python123fromdjango.httpimport HttpResponsedefhome(request):    returnHttpResponse('hello, world')

刷新网站首页,看到已经输出了”hello, world”。

Application

上一节”hello world”的例子只是说明了URL的用法,这节才是本文重点:编写一个名为articles的应用,从MySQL数据库里读取出文章作者、标题、内容。

首先建立应用,在项目文件夹中执行:

$ python manage.py startapp articles

运行后在项目文件夹中会创建article文件夹,包含下列文件:

articles/├── admin.py├── __init__.py├── migrations  └── __init__.py├── models.py├── tests.py└── views.py admin.py:当前应用在Django管理界面的设置。migrations:数据库迁移用文件夹,创建的migrate会存在这个文件夹里。models.py:模型文件,用 Python 类来描述数据表。views.py:视图文件,用来联系模型与模版,主要的业务逻辑一般都写在这里。tests.py:单元测试文件。

生成应用之后,要修改配置文件,告诉Django这个应用是属于当前项目的。打开配置文件(mysite/mysite/settings.py),找到INSTALLED_APPS元组,增加articles:

Python1234567891011INSTALLED_APPS= (    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django_openid_auth',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    #……    'articles',#加入应用)

然后编写模型文件(article/models.py):

Python1234567fromdjango.dbimport models # Create your models here.classArticle(models.Model):    title= models.CharField(max_length=64)    author= models.CharField(max_length=32)    content= models.TextField()

Django会根据模型文件自动生成migrations来操作数据库。syncdb命令在1.9版本之前仍然可以使用,但还是建议使用migrate:

$ python manage.py makemigrationsMigrations for ‘articles’:  0001_initial.py:    - Create model Article$ python manage.py migrateRunning migrations:  Rendering model states... DONE    Applying articles.0001_initial... OK

Django会创建名为articles_article的表,包含一个默认的主键和之前定义的字段:

mysql> show columns from articles_article;+---------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+---------+-------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || title | varchar(64) | NO | | NULL | || author | varchar(32) | NO | | NULL | || content | longtext | NO | | NULL | |+---------+-------------+------+-----+---------+----------------+4 rows in set (0.00 sec)

简单的模型就设置完成了,现在编辑应用的视图(articles/views.py)文件:

Python1234567# articles/views.pyfromdjango.shortcutsimport renderfromarticles.modelsimport Article#引入之前定义的model deflatest_article(request):    article_list= Article.objects.order_by('-id')    returnrender(request,'article.html',{'article_list':article_list})

编辑之前的urls.py文件(mysite/mysite/urls.py):

Python1234567891011fromdjango.conf.urlsimport include,urlfromdjango.contribimport admin from. importviewsfromarticles importviews asarticles_views #导入articles的views urlpatterns= [    url(r'^admin/',include(admin.site.urls)),    url(r'^$',views.home),    url(r'^articles/',articles_views.latest_article),]

现在访问http://127.0.0.1:8000/articles/,直接运行会报错TemplateDoesNotExist at 路径,因为还没有告诉Django,到哪里去找article.html文件。

编辑配置文件(mysite/mysite/settings.py),在56行找到TEMPLATE设置,在DIRS中设置一个模版路径,这里将模版目录指定为项目文件夹下的templates:

Python123456TEMPLATES= [    {        'BACKEND':'django.template.backends.django.DjangoTemplates',         'DIRS':[os.path.join(BASE_DIR,'templates'),],        'APP_DIRS':True,....

创建templates(mysite/templates)和articles.html文件(mysite/templates/articles.html)。如果使用过其它框架或者模板引擎,下面article.html的内容就很容易看懂了,Django在模版文件中利用相应的TAG控制传递过来的变量显示的位置:

12345{%for articlein article_list%}Author:{{article.author}}Title:{{article.title}}Content:{{article.title}}{%endfor %}

这样所有的配置就完成了,访问 http://127.0.0.1:8000/articles,Django会自动读取数据库中的内容,并显示在网页上。可以直接在数据库中写入数据,或是在Django的shell中操作:

$ python manage.py shell>>> from articles.models import Article>>> Article.create(title=’Django’, author=’perchouli’, content=’Django+MySQL’) Epilogue

本文的一些设置并不适用于实际生产环境,旨在介绍一些入门知识和快速配置的方法,如果希望更规范的学习Django,首推Django的官方文档,其次是Djangobook,我更新这篇文章的时候Djangobook2.0中文版已经翻译了大半了,也是学习Django很好的教材。

0 0 Django+MySQL安装配置详解(Linux)[更新为1.8.2版] Django+MySQL安装配置详解(Linux) mysql安装配置以及在django中的配置(windows版,以mysql5.6为例) django配置数据库为mysql Django配置Mysql数据库详解 Django配置Mysql数据库详解 linux 下安装python+django+mysql配置环境 Linux MySQL Apache Django配置 linux下django+mysql配置 linux下 Apache mysql python mod_python Django 配置安装说明,绝对可以安装上的说明 Python_python/django连接mysql安装与配置 Ubuntu下Django安装和mysql配置 Django框架及MySQL安装配置 Linux下MySQL安装及配置为服务 Ubuntu Linux 下安装配置Django Linux下Django的安装与配置 linux下django的安装、配置 linux安装Mysql详解....... jquery获取浏览器类型和版本号 CreateThread简单那多线程编程 SpringMVC下载文件(不是Spring下载文件) 网络基本概念之TCP, UDP, 单播(Unicast), 组播(Multicast) Ember.js实战 Django+MySQL安装配置详解(Linux)[更新为1.8.2版] 美国市场上15门最赚钱的编程语言 @Transactional注解工作原理 面试题总结3 Linux中的特殊权限 一个更容易扩展,根据用户个人信息生成密码弱口令生成器 genpAss MySQL数据库基础 CentOS6.5安装Tab增强版:bash-completion JQuery和Dom互换规则


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有